1. Field of the Invention
This invention relates to apparatus and methods for enabling software processes to communicate with one another.
2. Background of the Invention
Software processes are instances of computer programs executed on a processor. While executing, several processes often need to communicate with one another to pass data and/or instructions back and forth. For example, the J9 Java Virtual Machine developed by IBM includes an Attach API that enables several processes to communicate with one another for diagnostic and maintenance purposes. The Attach API enables a secondary attachment process of a first virtual machine (the “attacher” virtual machine) to communicate with a target process of the same or another virtual machine (the “target” virtual machine) while the target virtual machine is executing. This communication ideally occurs without interfering with the execution of the target virtual machine.
To enable the above-described communication, the attacher virtual machine needs a way to communicate with the target virtual machine in order to initiate the Attach API connection. Ideally, the method of communication would be portable among operating systems such as Linux®, Windows®, AIX®, and z/OS®, and have little if any run-time execution overhead. The method of communication will also ideally accommodate a large number of attacher and target virtual machines.
There are a number of conventional methods of communication that are provided by various operating systems. However, these methods of communication are typically not portable across different operating systems, place significant burdens on operating system resources, pose security risks, or generate unacceptable run-time overhead.
In view of the foregoing, what is needed is an apparatus and method to enable efficient communication between a large number of software processes. Ideally, such an apparatus and method will be portable across different operating systems, provide adequate security, not unduly burden operating system resources, and provide acceptable performance even with large numbers of processes.